[ Prev Page | Goto Content | Next Page ]
=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\=/=\
%esp@ __Small_OpenVMS_hackerz_guide__ @eax% Сегодня херовый день, завтра начнётся учёба и о хакинге придётся забыть на неделю. Вот и решил я написать небольшой гайд по openvms. О ней были доки и в x25zine, и в nightfall. Но как-то там всё кратко. Этот гайд расчитан именно на начинающих vms-хакеров коим являюсь и я ) [000001] small overview [000010] processes [000011] network [000100] file system [000101] mnemonics [000111] this is the end [001000] links $! ---------------------------- small overview ---------------------------- Итак, сперва как выглядит вход в систему: - мы логинемся через tcp/ip\decnet\dialup\x.25\what_ever - система читает из корня (дира [000000]) диру USERNAME.DIR;1 - далее если мы ввели правлиьный пароль нас пускают в систему - запускается login.com (по аналогии с .bashrc) Вот примерчик: $! $! This is a sample LOGIN.COM file. 04-02-1991 $! every command in this file gets executed once everytime $! you login to the system. $! $! create a symbol to return us to our login directory $! $ home :== set def sys$login $! $! Set up the EDT editor and MAIL to use my EDTINI file $! $ assign/nolog sys$login:edtini.edt edtini $ edit :== edit/edt/command = sys$login:edtini.edt $ mail :== mail/edit = (send,reply,forward) $ assign/nolog public:mail$keydef.ini mail$init $! $! create a short form for a long EMAIL address $! $! assign/nolog "in""remote_username@remote_node""" joe $! $! Set a more descriptive process name $! $! set proc/name = "J. Q. Public" $ exit Вот и пример DCL синтаксиса. Кстати, DCL == "Digital command language". Как нетрудно догадаться, символ '!' в начале строки означает что это коментарий. DCL оказался довольно гибким языком. Ещё пример: $ PRINT/COPIES = 5 GROCERY.LIS 'PRINT' - комманда '/COPIES' - квантификатор ака параметр. Передаётся через '/'. В данном случае количество печатаемых копий ' = 5 ' - значение параметра 'GROCERY.LIS' - непосредственно аргумент команды print- имя файла. Ещё нужно добавить, что шелл (ака dcl-интерпретатор) не чуствителен к регистру. Вот небольшой список команд : := = @ ACCOUNTING ALLOCATE ANALYZE APPEND ASSIGN ATTACH AUTHORIZE AUTOGEN BACKUP BASIC CALL CANCEL CC CLOSE COBOL CONNECT CONTINUE CONVERT COPY CREATE CXX DEALLOCATE DEASSIGN DEBUG DECK DECthreads DEFINE DEFRAGMENT DELETE DEPOSIT DIAGNOSE DIFFERENCES DIRECTORY DISABLE DISCONNECT DISMOUNT Documentation DPML DSR DSTGRAPH DUMP EDIT ENABLE ENDSUBROUTINE EOD EOJ Errors EXAMINE EXCHANGE EXIT F90 FDL FLOWGRAPH FONT FORTRAN GENCAT GOSUB GOTO HELP Hints ICONV IF INITIALIZE INQUIRE INSTALL Instructions JOB LATCP Lexicals LIBRARY LICENSE Line_editing LINK LMCP LOCALE LOGIN LOGOUT LYNX MACRO MAIL MERGE MESSAGE MINITAB Monitor MOUNT NCP NCS ON OPEN PASCAL PASSWORD PATCH PHONE PMDF PRINT PRODUCT PSWRAP PURGE Queues READ RECALL RECOVER RENAME REPLY REQUEST RETURN RMS RTL_Routines RUN RUNOFF SAS SEARCH SET SHOW SORT SPAWN Specify START STOP SUBMIT SUBROUTINE SWXCR Symbol_Assign SYNCHRONIZE SYSGEN SYSMAN System_Files System_Services TFF TSM TYPE UNLOCK V62_Features VEST VIEW WAIT WRITE Additional help libraries available (type @name for topics): MULTINET Нет смысла рассказывать о них когда существует `HELP`. А вот про MULTINET стоит уточнить. Вообще, vms'ки рассчитаны на два типа сетей - decnet и tcp/ip. Другие, например x.25 сети, тоже поддерживаются но dec или tcp - default. Дык вот, этот самый MULTINET это пакет утилит для работы с сетями tcp/ip. $ help multinet MULTINET MULTINET is a set of commands for maintaining the MultiNet network. Format MULTINET operation Additional information available: Parameters Books CHECK CONFIGURE DECODE FINGER FONT FTP HOST_TABLE KERBEROS LOAD Logical_Names LPRM NETCONTROL NETWARE NFSDISMOUNT NFSMOUNT NSLOOKUP PING PROFILE RCP RFC_Info RDATE REMIND RLOGIN RMTALLOC RSHELL RUSERS RWALL SEND SET SHOW SKEY SNMP_Info TALK TCPDUMP TCPVIEW TELNET TFTP TOKEN TRACEROUTE UNIX_Info WHOIS X11DEBUG Programming Самое основное есть, это радует ) Да, и на последок: в OpenVMS есть неплохая замена unix-овой комбинации ctrl-c. Это ctrl-y ;) $! ------------------------------- processes ------------------------------- При входе в систему каждому пользователю присваивается один процесс. И соответсвенно, мы светимся в списке пользователей ('$ show users') и в списке процессов ('$ show system'). Смена имени процесса: $ set proc/name = "V4xH4xr" Из списка пользователей можно исчезнуть, если присвоить своему процессу статус неинтерактивного. Как это сделать я не знаю (( Как раз на середине написания статьи я потерял доступ к тачке (сетка одного забугорного универа), так что покопаться не смог толком. Имхо, сделать процесс неинтерактивным можно поменяв занчение переменной окружения f$mode... $! ------------------------------- network ------------------------------- С tcp/ip рулиться с помошью multinet'a это просто и не интересно.А вот как юзать кластеры dec net'a: $ show network список нод в данном кластере. А вот как подключиться к ноде: $ set host node_name_here Есть ещё две полезных утилиты для общения с другими юзерами : MAIL и PHONE. Они весьма подробно описаны в хелпе, так что не будем останавливаться. Помимо логина на удалённую машну, мы можем попробывать смонтировать её диск или получить файлы с доступных винтов: $ DIRECTORY PARIS"GREG 8G4FR93A"::WORK2:[PUBLIC]*.*;* PARIS - имя ноды Далее ACL (Access Control List): GREG - использовать аккаунт GREG 8G4FR93A - пароль к аккаунту GREG WORK2 - диск PUBLIC - дира. Кстати, т.к. в acl пароль лежит в открытом виде, то можно попробывать поискать в доступных скриптах других пользователей - вполне реально найти что-нибудь интересное. $! ------------------------------- file system ------------------------------- Вот небольшая схема: [000000] /* system root */ i i-[JOE.DIR;1] i i-[MIKE.DIR;1]-i-SOMESHIT.TXT;1 i i ... i-[STUPID.DIR;1]--i-DOOM.EXE i i-README.TXT i ... Примерно такая схема директории - это файлы, в которых перечислены все входящие в них файлы. В корневой дире лежат директории всех пользователей. Вот формат имени файла: node::device:[root.][directory]file-name.file-type;version node - имя ноды, тоесть можно читать инфу с других машин. device - диск [root.] - имя рутовской диры, обязательно с точкой на конце. [directory] - дира или дыры. i.e. [MIKE.STUPID] file-name - это надеюсь понятно file-type - расширение файла ;version - один файл может иметь несколько версий xmpl: $ directory [MIKE.STUPID] DOOM.EXE README.TXT Узнать дефолтовую диру и диск можно так: $ SHOW DEFAULT а список девайсов и дисков системы можно получить такой командой: $ SHOW DEVICES Device Device Error Volume Free Trans Mnt Name Status Count Label Blocks Count Cnt DMA2: Mounted 0 BACKUP_FILE 4442 7 1 MTA1: Online 0 весьма предсказуемый синтаксис ;)) DISK2:[GROUP] Примонтировать к своему процессу можно c помошью команды MOUNT. вот её формат: MOUNT device-name[:][,...] [volume-label[,...]] [logical-name[:]] Основные типы файлов: .CLD Command description file .COM Command procedure file .DAT Data file .DIF Output file created by the DIFFERENCES command .DIR Directory file .DIS Distribution list file for the Mail utility .EDT Startup command file for the EDT editor .EXE Executable program image file created by the linker .HLB Help text library file .HLP Input source file for help libraries .INI Initialization file .JOU Journal file created by the EDT editor .LIS Listing file created by a language compiler or assembler; default input file for the PRINT and TYPE commands .LOG Batch job output file .MAI Mail message file .MEM Output file created by DIGITAL Standard Runoff (DSR) .PS POSTSCRIPT format file .REGIS Regis format file .RNO Input source file for DIGITAL Standard Runoff (DSR) .SIX Sixel graphic file .SYS System image file .TJL Journal file created by the DECTPU and ACL editors .TLB Text library file .TMP Temporary file .TPU Command file for the EVE editor .TPU$JOURNAL Journal file created by the EVE editor .TXT Input file for text libraries or Mail utility output files Получение инфы о режиме доступа к файлу: $ SHOW SECURITY 0DAY.TXT 0DAY.TXT object of class FILE Owner: [GREG] Protection: (System: RWED, Owner: RWED, Group: RE, World: RW) Access Control List: <empty> Группы пользователей при организации доступа к файлам: system - всякие супервизоры, etc owner - владелец group - группа world - все остальные Режимы: R - read W - write E - exec D - delete Формат Access Control List записи: NODE"username password"::disk:[directory]filename.filetype ACL необходимы для ограничения доступа к файлам через сеть (g02 раздел 'network' этого дока). $! ------------------------------- sys mnemonics ------------------------------- Системные мнемоники: sys$login - дира, в которую мы попадаем после логина sys$system - дира, которая прописана по дефолту нашей стартовой sys$output - типа stdout ;) f$directory - aka `pwd` f$environment - aka `printenv` f$environment{"prompt"} - ака $PS1 в sh f$getjpi - инфа о аккаунте, процесс, etc f$mode - интерактивный или неинтерактивный процесс f$privelege - инфа о привелегиях данного пользователя f$process - имя процесса пользователя f$setprv - set privelege f$user - aka getuid(). Только в вмсках UIC - User Ident Code f$getsyi - получить инфу о данной ноде f$pid - process id f$time - aka `date` f$device - инфа о девайсах f$getdvi - инфа о конкретном девайсе f$search - искать файл в дире f$file_attributes - получить атрибуты данного файла Примерчик из "OpenVMS users guide" (частичным конспектом которого является и эта статья )): $ NODE = F$GETSYI("NODENAME") $ SET PROMPT = "''NODE'$ " $! ------------------------------ this is the end ------------------------------ Надеюсь эта статья дополнит ваше представление о vms, сложившееся после чтения nightfall/x25zine(естественно если вы с ней не работали лично). C ya! $! --------------------------------- links ------------------------------------- [1] http://www2.hmc.edu/www_common/ovms073/index.html [ Prev Page | Goto Content | Next Page ]